Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Programación en Entorno Clúster Euler (página 2)




Enviado por Pablo Turmero



Partes: 1, 2

Monografias.com
CLUSTER EULER Optimización de Intel
Flags de paralelización:
parallel: AutoParalelización. Convierte de forma a utomática código secuencial en paralelo por medio de directivas.
openmp: Hace que el compilador reconozca las directivas OpenMP.

Flags para facilitar el porting y debug de códigos:
-posixlib: Funciones de IEEE* POSIX FORTRAN-77 Language bindings, como específicado en IEEE Standard 1003.9-1992.
-i8: Representación interna de enteros en 64 bits (8 bytes).
-r8: Representación interna de reales y complejos en 64 bits.
-zero: Inicializa variables a 0.
-g: Genera código apto para depurar (debug).
-save: Colocación de variables en memoria estática.

Monografias.com
CLUSTER EULERDepuración de errores
Para el "debugging" de código disponemos de diferentes herramientas que nos ayudan a encontrar fallos en el código fuente:

Debugger de Intel (idb):
Soporta Fortran, C y C++. Tiene una interface basada en línea de comandos. Se invocacon el comando “idb” seguido del nombre del ejecutable. Además, idb cuenta con una interfaz gráfica, para ello, se invoca con el flag “-gui”. Ejemplos:
idb a.out (modo línea)
idb -gui a.out (modo gráfico en X window)

Debugger de GNU (gdb):
GNU debugger. Soporta C y C++ y Fortran. También es un depurador en modo línea, y por lo tanto se utiliza poco.

Monografias.com
CLUSTER EULERDepuración de errores
Data Display Debugger (ddd):
Es uninterfaz gráfico para gdb y otros debuggers (incluido el de intel).
Funciona bajo X Window ya que se trata de una herramienta gráfica.
Para iniciar un ciclo de depuración (debug) se debe compilar el código con el flag "-g", que inhibe parcialmente la optimización y genera información simbólica en el código ejecutable para el debugger, esencialmente los números de líneas correspondientes entre fuente y ejecutable:
ifort -g -o prog.exe prog.f (Fortran)
icc -g -o prog.exe prog.c (C)
A continuación se invoca al debugger:
ddd prog.exe
Aparecerá una ventana X en la q ue podemos realizar las operaciones necesarias para la depuración de nuestro código. Una forma sencilla de empezar consiste en pisar el botón "Run" que inicia la ejecución y esperar a ver en qué línea se muere nuestro programa.

Monografias.com
CLUSTER EULERProgramación paralela
OpenMP
Se pueden compilar y ejecutar programas que utilicen directivas OpenMP, utilizando los compiladores de Intel.
Se dene compilar el código con el flag " -openmp".
Antes de ejecutar se debe declarar la variable de entorno "OMP_NUM_THREADS" con el número de procesadores que deseemos:

ifort -openmp prog.f -o prog.exe
setenv OMP_NUM_THREADS 4 (csh)
export OMP_NUM_THREADS=4 (sh)
prog.exe

Monografias.com
CLUSTER EULERProgramación paralela
MPI
La máquina dispone de varias implementaciones de la librería MPI que pueden utilizarse según conveniencia.
La motivación de tener varias implementaciones es ayudar a los usuarios en los problemas relacionados con la portabilidad de códigos.
Existen códigos de cálculo basados en MPI fáciles de portar a la plataforma con una determinada implementación y no con otras. El usuario debe elegir cual de ellas es mejor para su código.
Las implementaciones de la librería MPI disponibles en nuestro cluster son MPICH, MPICH2, LAM, OPENMPI y MVAPICH.

Monografias.com
CLUSTER EULERProgramación paralela
MPI
OPENMPI parece ser la implementación dominante últimamente.
Otras implementaciones como MPICH2 y LAM/MPI ofrecen la ventaja de menores tiempos de latencia.
Las tres implementaciones de la librería que soportan comunicaciones a través de la red infiniband son MVAPICH, MVAPICH2 y OPENMPI.
La mayoría de las aplicaciones paralelas pueden potencialmente obtener mejores resultados en cuanto a velocidad y escalado utilizando infiniband.
Las otras implementaciones darán menor rendimiento en la mayor parte de los casos, pero están instaladas por motivos de portabilidad de software.

Monografias.com
CLUSTER EULERProgramación paralela
MPI
Para ver la lista de implementaciones de MPI disponibles ejecutar el comando:
switcher mpi –list
En el momento de escribir este manual las opciones son las siguientes:

lam-X.X.X
lam-intel-X.X.X
mpich-ch_p4-gcc-X.X.X
mpich-ch_p4-intel-X.X.X
openmpi-X.X.X
openmpi-intel-X.X.X
ib-mvapich-X.X.X-gccib-mvapich-X.X.X-intelib-mvapich2-X.X.X-gccib-mvapich2-X.X.X-intelib-openmpi-X.X.X-gccib-openmpi-X.X.X-intel

Monografias.com
CLUSTER EULERProgramación paralela
MPI
Se puede averiguar el módulo cargado en en el perfil del usuario con el siguiente comando:
switcher mpi
Para compilar y ejecutar programas con MPI, tendremos que tener en el “path” los comandos adecuados y en el “library path” las librerías correspondientes.
El programador puede hacerlo del modo usual en UNIX, modificando las variables de entorno “PATH” y “LD_LIBRARY_PATH”, o con la utilidad “switcher”.

Monografias.com
CLUSTER EULERProgramación paralela
MPI
Ejemplo: si se desea cambiar al entorno LAM con compilador intel:
switcher mpi = lam-intel-7.1.2
switcher_reload
El primer comando cambia el fichero de configuración y el segundo lo carga para actualizar las variables de entorno.
Una vez elegida la implementación de MPI que se va a utilizar, ya se dispone en el PATH de las utilidades necesarias para compilar y ejecutar aplicaciones.
Actualmente es necesario ejecutar también el comando:
mpi-selector-menu (elegir la opción adecuada)

Monografias.com
CLUSTER EULERProgramación paralela
MPI
La compilación se realiza utilizando los comandos “mpif90”, “mpìcc” y “mpicxx” que se encargan de invocar a los compiladores y añadir los flags para las librerías propias de MPI.
Ejemplos:
mpif90 -o prog.exe prog.f90 (Fortran)
mpicc -o prog.exe prog.c (C)
mpicxx -o prog.exe prog.cc (C++)
La ejecución de una aplicación MPI depende de la implementación que se haya utilizado para compilarla. Lo usual es utilizar los comandos “mpirun” o “mpiexec”.
Ejemplos:
mpirun -np 8 prog.exe
mpiexec -n 8 prog.exe
En la práctica estos comandos se utilizan en el entorno batch.

Monografias.com
CLUSTER EULEREjecución paralela
La ejecución de los programas de cálculo se debe realizarse utilizando el sistema de batch.

Para ello, lo usual es crear un “script” o fichero de comandos de shell que contenga en las primeras líneas los “flags” para el sistema batch.

A continuación se ofrece un ejemplo sencillo:

#PBS -l nodes=8
cd ${PBS_O_WORKDIR}
NUMPROC=`wc -l ${PBS_NODEFILE} | awk ' {print $1} ' `
mpirun -np $NUMPROC -machinefile ${PBS_NODEFILE} prog.exe

Monografias.com
CLUSTER EULEREjecución paralela
La sintaxis de la última línea es válida en el caso de utilizar las implementaciones MPICH y OPENMPI.

En caso de utilizar MVAPICH2 debe cambiarse por estas dos:

mpdboot -n $NUMPROC -f $PBS_NODEFILE
mpiexec -n $NUMPROC prog.exe

Esto es así porque antes de ejecutar con “mpiexec” es necesario arrancar el demonio con el comando “lamboot”.

Por último, si se utiliza la implementación LAM entonces debe cambiarse por estas líneas:

lamboot -d -f $PBS_NODEFILE
mpiexec -n $NUMPROC prog.exe
lamcleanup

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter